package pe.edu.upc.jtigers.svpn.service.implement;

import java.text.ParseException;
import java.text.SimpleDateFormat;

import pe.edu.upc.jtigers.svpn.aplication.bean.UsuarioBean;
import pe.edu.upc.jtigers.svpn.aplication.excepcion.DAOExcepcion;
import pe.edu.upc.jtigers.svpn.data.Constans.PerfilConstans;
import pe.edu.upc.jtigers.svpn.data.Constans.TipoUsuarioConstans;
import pe.edu.upc.jtigers.svpn.domain.data.EmprendedorDao;
import pe.edu.upc.jtigers.svpn.domain.data.UsuarioDao;
import pe.edu.upc.jtigers.svpn.domain.model.Emprendedor;
import pe.edu.upc.jtigers.svpn.domain.model.Perfil;
import pe.edu.upc.jtigers.svpn.domain.service.EmprendedorService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

@Service
public class EmprendedorServiceImpl implements EmprendedorService {

	@Autowired
	private EmprendedorDao emprendedorDao;
	@Autowired
	private UsuarioDao usuarioDao;

	@Override
	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = { DAOExcepcion.class })
	public Emprendedor registrarEmprendedor(UsuarioBean usuarioBean) {
		Emprendedor emprendedor = new Emprendedor();
		try {
			emprendedor
					.setCorreoElectronico(usuarioBean.getCorreoElectronico());
			emprendedor.setNumDocumento(usuarioBean.getNumDocumento());
			if (usuarioBean.getIdUsuario() != 0
					|| usuarioDao.validarUsuario(emprendedor) == null) {
				emprendedor.setIdUsuario(usuarioBean.getIdUsuario());
				emprendedor.setNombres(usuarioBean.getNombres());
				emprendedor.setApePaterno(usuarioBean.getApePaterno());
				emprendedor.setApeMaterno(usuarioBean.getApeMaterno());
				emprendedor.setSexo(usuarioBean.getSexo());
				emprendedor.setNumDocumento(usuarioBean.getNumDocumento());
				emprendedor.setCorreoElectronico(usuarioBean
						.getCorreoElectronico());
				emprendedor.setCelular(usuarioBean.getCelular());
				emprendedor.setDireccion(usuarioBean.getDireccion());
				emprendedor.setTipoUsuario(TipoUsuarioConstans.EMPRENDEDOR);
				try {
					if (usuarioBean.getFechaNacimiento() != null
							&& usuarioBean.getFechaNacimiento() != "") {
						SimpleDateFormat formato = new SimpleDateFormat(
								"dd/mm/yy");
						emprendedor.setFechaNacimiento(formato
								.parse(usuarioBean.getFechaNacimiento()));

					}
				} catch (ParseException e) {
				}
				emprendedor.setContrasena(usuarioBean.getContrasena());
				emprendedor.getTipoDocumento().setIdDetalleParametro(
						usuarioBean.getIdTipoDocumento());
				emprendedor.setPerfil(new Perfil());
				emprendedor.getPerfil().setIdPerfil(PerfilConstans.EMPRENDEDOR);
				emprendedorDao.registrarEmprendedor(emprendedor);
			}

		} catch (DAOExcepcion e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return emprendedor;
	}

	@Override
	public Emprendedor obtenerEmprendedor(int idEmprendedor) {
		Emprendedor emprendedor = null;
		try {
			emprendedor = emprendedorDao.obtenerEmprendedor(idEmprendedor);
		} catch (DAOExcepcion e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return emprendedor;
	}

	@Override
	public UsuarioBean obtenerUsuarioBean(int idEmprendedor) {
		Emprendedor emprendedor = this.obtenerEmprendedor(idEmprendedor);
		UsuarioBean usuario = null;
		if (emprendedor != null) {
			usuario = new UsuarioBean();
			usuario.setApeMaterno(emprendedor.getApeMaterno());
			usuario.setApePaterno(emprendedor.getApePaterno());
			usuario.setCelular(emprendedor.getCelular());
			usuario.setContrasena(emprendedor.getContrasena());
			usuario.setCorreoElectronico(emprendedor.getCorreoElectronico());
			usuario.setDireccion(emprendedor.getDireccion());
			if (emprendedor.getFechaNacimiento() != null) {
				SimpleDateFormat format = new SimpleDateFormat("dd/mm/YY");
				usuario.setFechaNacimiento(format.format(emprendedor
						.getFechaNacimiento()));
			}
			usuario.setIdTipoDocumento(emprendedor.getTipoDocumento()
					.getIdDetalleParametro());
			usuario.setIdUsuario(emprendedor.getIdUsuario());
			usuario.setNombres(emprendedor.getNombres());
			usuario.setNumDocumento(emprendedor.getNumDocumento());
			usuario.setSexo(emprendedor.getSexo());
			usuario.setTipoUsuario(emprendedor.getTipoUsuario());
		}
		return usuario;
	}

}
